
#include "Poligono.h"


Poligono::Poligono(void)
{
}

Poligono::Poligono(Dispersor* disp){

	//trabajo con el rectangulo
	if(Utilidades::sonStringsIguales(disp->getTipo(), "rectangulo")){
		
		double centroX = disp->getPosX();
		double centroY = disp->getPosY();
		double ancho = disp->getAncho() / 2;  //considero que el ancho/lado es el total de extremo a extremo
		double alto = disp->getAlto() / 2; 

		Punto* no = new Punto(); //noroeste
		Punto* ne = new Punto(); //noreste
		Punto* se = new Punto(); //sudeste
		Punto* so = new Punto(); //sudoeste


		no->setPosX(centroX - ancho);
		no->setPosY(centroY + alto);
		this->listaPuntos.push_front(no);

		ne->setPosX(centroX + ancho);
		ne->setPosY(centroY + alto);
		this->listaPuntos.push_front(ne);

		se->setPosX(centroX + ancho);
		se->setPosY(centroY - alto);
		this->listaPuntos.push_front(se);

		so->setPosX(centroX - ancho);
		so->setPosY(centroY - alto);
		this->listaPuntos.push_front(so);
	}

	//trabajo con el triangulo, considero que el mismo es equilatero
	if(Utilidades::sonStringsIguales(disp->getTipo(), "triangulo")){

		double centroX = disp->getPosX();
		double centroY = disp->getPosY();
		double lado = disp->getLado();
		
		double consta = 0.866025403;  //esto es: raiz de 3 sobre 2
		double alto = lado * consta; //


		Punto* norte = new Punto();
		Punto* este = new Punto(); 
		Punto* oeste = new Punto();

		norte->setPosX(centroX);
		norte->setPosY(centroY + (alto/2));
		this->listaPuntos.push_front(norte);

		este->setPosX(centroX + (lado/2));
		este->setPosY(centroY - (alto/2));
		this->listaPuntos.push_front(este);

		oeste->setPosX(centroX - (lado/2));
		oeste->setPosY(centroY - (alto/2));
		this->listaPuntos.push_front(oeste);
	}

}